草庐IT

Java Generics - 类本身的子类?

全部标签

c++ - 模板子类覆盖父类的虚函数

下面的代码是用gccv4.3.3编译的,模板化的子类似乎覆盖了父类中的虚函数,但这是否违反了不能有虚模板函数的规则?还是发生了其他我不明白的事情?classBaseClass{public:virtualvoidFunc(intvar){std::coutclassTemplateClass:publicBaseClass{public:usingBaseClass::Func;virtualvoidFunc(TTvar){std::coutb;BaseClass*c=newTemplateClass;intintVar=3;doubledoubleVar=5.5;a.Func(int

c++ - 在 C++ 中调用函数是不明确的。候选函数是原型(prototype)和函数本身

我正在完成StanfordCS106BC++作业,但作业存在“语义问题”。编译器似乎无法推断调用是针对函数还是函数原型(prototype)。我不明白为什么会调用原型(prototype)。我怎样才能做到调用函数而不是原型(prototype)?我收到的错误消息是“调用‘humansTurn’不明确”。错误消息与页面底部humanTurn(Lexicon,Lexicon)函数内的humanTurn(Lexicon,Lexicon)函数的调用有关。该函数的原型(prototype)在主函数之上。如有任何帮助,我们将不胜感激。亲切的问候,梅胡尔/**File:Boggle.cpp*----

c++ - 使用指向基抽象类的指针访问子类成员

classa//mybaseabstractclass{public:virtualvoidfoo()=0;};classb:publica//mychildclasswithnewmemberobject{public:voidfoo(){}intobj;};intmain(){bbee;a*ptr=&bee;ptr->obj;//ERROR:classahasnomembernamed"obj"}我的问题是,当我有一个指向子类(“b”)对象的基类(“a”)指针时,如何访问“obj”成员?我知道转换应该可以解决问题,但我正在寻找更好的解决方案。 最佳答案

c++ - 是否可以使用包含 boost::variant 的 STL 容器并在变体类型本身中使用相同的容器类型?

这似乎是不可能的,但我还是想问问。我定义了一个boost::variant像这样:typedefboost::variantConfigVariant;稍后在我的代码中我定义了一个std::map像这样:std::mapmy_map;现在我希望能够拥有std::map里面的值my_map.例如,我想这样做:my_map[key1][key2]="helloworld";我认为这是不可能的原因是因为相应的变体定义看起来像这样:typedefboost::variantConfigVariant;既然不可能进行这样的类型定义,那么有什么办法可以解决这个问题吗?

c++ - std::vector 本身的地址稳定吗?

如果我获取std::vector的地址,并且它在插入元素后重新分配,我可以假设它的地址没有改变吗?谢谢。 最佳答案 是的,在C++中你可以安全地假设。但是,第一个元素的地址&x[0]可以改变,那些地址是不一样的。编辑:当然其他元素的地址也是一样。顺便说一下,第一个元素的地址是否可能保持或多或少的稳定取决于whetherornotthegrowthfactorofthearrayislessthanthegoldenratio。,这是了解IMO的一个非常酷的事实。 关于c++-std::v

c++ - 关于从基类到子类指针的向下转型

静态检查工具显示了以下代码的违规行为:classCSplitFrame:publicCFrameWnd...classCVsApp:publicCWinAppCWnd*CVsApp::GetSheetView(LPCSTRWindowText){CWnd*pWnd=reinterpret_cast(m_pMainWnd)->m_OutputBar.GetChildWnd(WindowText);returnpWnd;}错误信息:“CSplitFrame”类继承自“CWnd”类描述:避免向下转换继承层次。此规则检测从基类指针到子类指针的转换。好处:允许向下转换继承层次结构会导致维护问题,

c++ - 覆盖子类中的 Qt 插槽

我有一个基类,它定义了一个Qt插槽classBase{public:Base(){connect(otherobject,SIGNAL(mySignal),this,SLOT(mySlot));}publicslots:virtualvoidmySlot(){}}子类A只是实现了一些其他的东西。子类B覆盖插槽classSubB:Base{public:SubB():Base(){//Necessary?connect(otherobject,SIGNAL(mySignal),this,SLOT(mySlot));}publicslots:virtualvoidmySlot()overr

c++ - Qt/C++ 在没有子类化的情况下重写函数

我想覆盖QWidget的虚函数而不对其进行子类化。在java中是可能的。我找到了这个链接:overridingmethodswithoutsubclassinginJava不确定C++中是否也有方法。有什么想法吗? 最佳答案 没有继承就不能覆盖。链接示例中的代码进行子类化。也许混淆来自于它不使用extends关键字的事实。它创建了XStream的匿名子类并覆盖了它的方法。这样的类也存在于C++中,类似的代码也是可能的。命名约定有点不同。没有名称但有命名实例的类称为未命名†。以下是我对代码的音译,以展示如何在C++中使用未命名类来完成

c++ - 制作不同子类实例的 vector

尝试搜索,没有返回(我认为)。是否可以制作一个抽象类的vector?例如,我有父类(superclass)Unit。我有士兵、车辆和轰炸机子类。但是我想要一个vector中的任何子类的实例,例如vectorUnitList可以包含士兵和车辆的实例吗?这可能吗?如果有帮助,我会使用C++。 最佳答案 是的,但是您需要使用指针或智能指针(我会选择这个)。structX{virtual~X(){}//a;a.push_back(newY);a[0]->foo();for(inti=0;i不要忘记删除分配的内存。为什么不能使用实际对象:假设

c++ - 键值映射中的部分查找,其中键本身是键值映射

假设我们有一个数据结构,它是一个键值映射,其中键本身也是一个键值映射。例如:map>,string>现在,假设我们要查询此映射中与键的键值的某个子集匹配的所有顶级键/值。示例:map={{"k1":"v1","k2:"v2"}:"value1",{"k1":"v3","k2:"v4"}:"value2",{"k1":"v1","k2:"v5"}:"value3"}我们的查询是“给我所有键值,其中键包含{"k1":"v1"},它会返回第一个和第三个值。类似地,查询{"k1":"v3","k2":"v4"}将返回同时具有k1=v3和k2=v4的所有键值>,产生第二个值。显然我们可以在每个查